package br.gov.mi.corporativo.dominio.rhmi;

// Generated 17/11/2014 09:46:12 by Hibernate Tools 4.0.0

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.UniqueConstraint;

import org.hibernate.annotations.Immutable;

/**
 * FuncionarioAfastamento generated by hbm2java
 */
@Entity @Immutable
@Table(schema = "DES_RHMI", name = "FUNCIONARIO_AFASTAMENTO", uniqueConstraints = @UniqueConstraint(columnNames = {
		"ID_FUNCIONARIO_CARGO_HIST", "DT_TERMINO" }))
public final class FuncionarioAfastamento implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -8687571933936295351L;
	
	@Id
	@Column(name = "ID_FUNCIONARIO_AFASTAMENTO", unique = true, nullable = false, precision = 22, scale = 0)
	private Long idFuncionarioAfastamento;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_FUNCIONARIO_SUBSTITUTO")
	private Funcionario funcionario;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_TIPO_AFASTAMENTO", nullable = false)
	private TipoAfastamento tipoAfastamento;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_FUNCIONARIO_CARGO_HIST", nullable = false)
	private FuncionarioCargo funcionarioCargo;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "DT_INICIO", nullable = false, length = 7)
	private Date dtInicio;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "DT_TERMINO", length = 7)
	private Date dtTermino;
	
	@Column(name = "ST_VENCIMENTO", nullable = false, length = 1)
	private String stVencimento;
	
	@Column(name = "ST_REGISTRO", nullable = false, length = 1)
	private String stRegistro;

	public FuncionarioAfastamento() {
	}

	public FuncionarioAfastamento(Long idFuncionarioAfastamento,
			TipoAfastamento tipoAfastamento, FuncionarioCargo funcionarioCargo,
			Date dtInicio, String stVencimento, String stRegistro) {
		this.idFuncionarioAfastamento = idFuncionarioAfastamento;
		this.tipoAfastamento = tipoAfastamento;
		this.funcionarioCargo = funcionarioCargo;
		this.dtInicio = dtInicio;
		this.stVencimento = stVencimento;
		this.stRegistro = stRegistro;
	}

	public FuncionarioAfastamento(Long idFuncionarioAfastamento,
			Funcionario funcionario, TipoAfastamento tipoAfastamento,
			FuncionarioCargo funcionarioCargo, Date dtInicio, Date dtTermino,
			String stVencimento, String stRegistro) {
		this.idFuncionarioAfastamento = idFuncionarioAfastamento;
		this.funcionario = funcionario;
		this.tipoAfastamento = tipoAfastamento;
		this.funcionarioCargo = funcionarioCargo;
		this.dtInicio = dtInicio;
		this.dtTermino = dtTermino;
		this.stVencimento = stVencimento;
		this.stRegistro = stRegistro;
	}

	
	public Long getIdFuncionarioAfastamento() {
		return this.idFuncionarioAfastamento;
	}

	
	public Funcionario getFuncionario() {
		return this.funcionario;
	}

	
	public TipoAfastamento getTipoAfastamento() {
		return this.tipoAfastamento;
	}

	
	public FuncionarioCargo getFuncionarioCargo() {
		return this.funcionarioCargo;
	}

	
	public Date getDtInicio() {
		return this.dtInicio;
	}

	
	public Date getDtTermino() {
		return this.dtTermino;
	}

	
	public String getStVencimento() {
		return this.stVencimento;
	}

	
	public String getStRegistro() {
		return this.stRegistro;
	}

}
